package com.huan.netty03;

/**
 * @author 作者:刘欢
 * @create 2024-03-24-17:22
 */
public class netty03 {
    // TODO 开始学习netty echo服务器

    /**
     * Netty如何写一个 echo 服务器
     * Netty 实现的 echo 服务器都需要下面这些：
     * 一个服务器 handler：这个组件实现了服务器的业务逻辑，决定了连接创建后和接收到信息后该如何处理
     * Bootstrapping： 这个是配置服务器的启动代码。最少需要设置服务器绑定的端口，用来监听连接请求。
     * 通过 ChannelHandler 来实现服务器的逻辑
     * Echo Server 将会将接受到的数据的拷贝发送给客户端。因此，我们需要实现 ChannelInboundHandler 接口，用来定义处理入站事件的方法。由于我们的应用很简单，只需要继承 ChannelInboundHandlerAdapter 就行了。这个类 提供了默认 ChannelInboundHandler 的实现，所以只需要覆盖下面的方法：

     * channelRead() - 每个信息入站都会调用
     * channelReadComplete() - 通知处理器最后的 channelread() 是当前批处理中的最后一条消息时调用
     * exceptionCaught()- 读操作时捕获到异常时调用
     * EchoServerHandler 代码如下：
     *
     * Listing 2.2 EchoServerHandler
     */


    /**
     * Netty写一个 echo 客户端
     * 在上节的内容中我们完成了echo服务器的编写，接下来就让我们一起来学习Netty中如何写一个echo的客户端，这样才能让连接客户端，并完成信息的传送。

     * 客户端的工作内容：
     * 连接服务器
     * 发送信息
     * 发送的每个信息，等待和接收从服务器返回的同样的信息
     * 关闭连接
     * 用 ChannelHandler 实现客户端逻辑
     * 跟写服务器一样，我们提供 ChannelInboundHandler 来处理数据。下面例子，我们用 SimpleChannelInboundHandler 来处理所有的任务，需要覆盖三个方法：

     * channelActive() - 服务器的连接被建立后调用
     * channelRead0() - 数据后从服务器接收到调用
     * exceptionCaught() - 捕获一个异常时调用
     * Listing 2.4 ChannelHandler for the client
     */
}
